Apache Mina
NOTE
Apache Mina 필터 체인 구조 및 주요 Filter 정리.
🖥️ 참고
- Apache Mina guide: https://mina.apache.org/mina-project/developer-guide.html
- IoHandlerAdapter repo: https://nightlies.apache.org/mina/mina/2.1.7/apidocs/org/apache/mina/core/service/IoHandlerAdapter.html
📌 개념
Filter 종류
| Filter | class | Description |
|---|---|---|
| Blacklist | BlacklistFilter | Blocks connections from blacklisted remote addresses |
| Buffered Write | BufferedWriteFilter | Buffers outgoing requests like the BufferedOutputStream does |
| Compression | CompressionFilter | |
| ConnectionThrottle | ConnectionThrottleFilter | |
| ErrorGenerating | ErrorGeneratingFilter | |
| Executor | ExecutorFilter | |
| FileRegionWrite | FileRegionWriteFilter | |
| KeepAlive | KeepAliveFilter | |
| Logging | LoggingFilter | Logs event messages, like MessageReceived, MessageSent, SessionOpened, … |
| MDC Injection | MdcInjectionFilter | Inject key IoSession properties into the MDC |
| Noop | NoopFilter | A filter that does nothing. Useful for tests. |
| Profiler | ProfilerTimerFilter | Profile event messages, like MessageReceived, MessageSent, SessionOpened, … |
| ProtocolCodec | ProtocolCodecFilter | A filter in charge of encoding and decoding messages |
| Proxy | ProxyFilter | |
| Reference counting | ReferenceCountingFilter | Keeps track of the number of usages of this filter |
| SessionAttributeInitializing | SessionAttributeInitializingFilter | |
| StreamWrite | StreamWriteFilter | |
| SslFilter | SslFilter | |
| WriteRequest | WriteRequestFilter |
- LoggingFilter: 모든 이벤트와 요청을 기록
- ProtocolCodecFilter: 들어오는 ByteBuffer 메시지를 POJO로 변환하고, 그 반대의 경우도 마찬가지
- CompressionFilter: 모든 데이터를 압축
- SSLFilter: SSL - TLS - StartTls 지원을 추가
// filterChain에 넣는방법
NioSocketAccpetor acceptor = new NioSocketAcceptor();
//getFilterChain()을 이용하여, ProtocolCodecFilter 추가
acceptor.getFilterChain().addLast("codec", new protocolCodecFilter());